8941. Матрица

 

Заданы два натуральных числа n и m. Вывести матрицу, состоящую из n строк и m столбцов, заполненную натуральными числами от 1 до n * m, как показано в примере.

 

Вход. Два натуральных числа n и m (1 ≤ n, m ≤ 100).

 

Выход. Вывести требуемую матрицу.

 

Пример входа

Пример выхода

2 3

1 2 3

4 5 6

 

 

РЕШЕНИЕ

массив

 

Анализ алгоритма

Задачу можно решить при помощи двойного цикла. Выводим матрицу не лету.

Задачу можно решить при помощи двумерного массива. Сгенерируем и занесем матрицу в двумерный массив. Выведем элементы массива в требуемом порядке.

 

Реализация алгоритма

Читаем входные данные.

 

scanf("%d %d", &n, &m);

 

В переменной cnt перебираем натуральные числа от 1 до n * m. Выводим требуемую матрицу.

 

cnt = 1;

for (i = 0; i < n; i++)

{

  for (j = 0; j < m; j++)

    printf("%d ", cnt++);

  printf("\n");

}

 

Реализация алгоритма массив

 

#include <stdio.h>

 

int n, m, i, j, cnt;

int a[100][100];

 

int main(void)

{

  scanf("%d %d", &n, &m);

  cnt = 1;

  for (i = 0; i < n; i++)

  for (j = 0; j < m; j++)

    a[i][j] = cnt++;

 

  for (i = 0; i < n; i++)

  {

    for (j = 0; j < m; j++)

      printf("%d ", a[i][j]);

    printf("\n");

  }

  return 0;

}

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    int n = con.nextInt();

    int m = con.nextInt();

    int a[][] = new int[n+1][m+1];

 

    int cnt = 1;

    for(int i = 1; i <= n; i++)

    for(int j = 1; j <= m; j++)

      a[i][j] = cnt++;

 

    for(int i = 1; i <= n; i++)

    {

      for(int j = 1; j <= m; j++)

        System.out.print(a[i][j] + " ");

      System.out.println();

    }

    con.close(); 

  }

}

 

Python реализация

 

n, m = map(int,input().split())

cnt = 1

for i in range(n):

  for j in range(m):

    print(cnt, end = ' ')

    cnt += 1

  print()